import pinia from '@/stores';
import { useUserStore } from '@/stores/modules/user';
// 获取对应的用户仓库
let userStore = useUserStore(pinia);

/**
 * 创建自定义指令的方法就是，使用app应用实例的directive方法
 * 第一个参数为自定义名称，第二个参数为执行的逻辑
 * 这个指令实现按钮权限控制的原因是，通过判断当前按钮是否在后端返回的数据中
 */
export const isHasButton = (app: any) => {
  // 全局自定义指令：实现按钮的权限控制
  app.directive('has', {
    // 代表使用这个全局自定义指令的DOM|组件挂在完毕的时候执行一次
    mounted(el: Element, options: any) {
      // 检查这个按钮是否在按钮权限数组中
      if (!userStore.buttons.includes(options.value)) {
        // 获取到这个DOM的父节点，然后删除这个DOM
        el.parentNode?.removeChild(el);
      }
    },
  });
};
